!function (global) {
    Utils = function () {
        "use strict";
        function Utils() {
            return instance = this, this
        }

        var instance;
        return $ = jQuery || Zepto || $j, Utils.prototype.binder = function (a) {
            var b = this, c = this.Events;
            if (!isEmpty(c)) {
                var d = className(this);
                isEmpty(d) && (this.clazz = d = "Plugin");
                try {
                    $.each(c, function (d, e) {
                        if (!isEmpty(c)) {
                            var e = c[d];
                            if (!isEmpty(d)) {
                                var f = d.split("->"), g = f[0], h = f[1];
                                if (!(isEmpty(g) || isEmpty(h) || isNotFunc(b[e]) && isNotFunc(e))) {
                                    var i = function (a) {
                                        isNotFunc(e) ? b[e].call(this, b, a) : e.call(this, b, a)
                                    }, j = -1 != h.indexOf("[window]"), k = -1 != h.indexOf("[document]");
                                    j && ($(window).unbind(g, i), $(window).bind(g, i), h = h.replace(/[\[window\]]/g, "")), k && ($(document).unbind(g, i), $(document).bind(g, i), h = h.replace(/[\[document\]]/g, "")), isEmpty(h) || (a ? $(a).delegate(h, g, i) : $(h).off(g).on(g, i))
                                }
                            }
                        }
                    })
                } catch (e) {
                    g_console.log("Error Occured When Binding Events:" + e)
                }
            }
        }, Utils.prototype.initParams = function (a) {
            var b = className(this);
            if (isNotEmpty(a)) {
                g_console.log("[" + b + "]Initializing Params with outer params");
                for (var c in a)this[c] = a[c]
            }
            if (isNotEmpty(this.arg) && isNotEmpty(this.arg[0])) {
                g_console.log("[" + b + "]Initializing Params with arguments[0]");
                var d = this.arg[0];
                for (var c in d)isNotEmpty(d[c]) && (this[c] = d[c])
            }
        }, Utils.prototype.initView = function (a, b, c) {
        }, Utils.prototype.load = function (a, b, c, d) {
            var e = this;
            return $.ajax({
                url: a, success: function (a) {
                    isFunc(c) && c.call(e, a)
                }, data: d, async: b, type: "post"
            }).responseText
        }, Utils.prototype.errorHandler = function (msg, success, error, diy) {
            try {
                var msg = eval("(" + msg + ")");
                if (msg.error) {
                    if (isEmpty(diy) || !diy)return dialog.get("error", msg.msg), "undefined" != typeof error && setTimeout(function () {
                        error(msg)
                    }, 2e3), !1;
                    if ("undefined" != typeof error)return error(msg)
                }
                return success(msg)
            } catch (e) {
                return void("undefined" != typeof e.stack ? dialog.get("jserror", e.stack.substring(0, 50)) : dialog.get("jserror", e.message))
            }
        }, Utils.prototype.stopDefault = function (a) {
            a.preventDefault(), a.returnvalue = !1
        }, Utils.prototype.initStatus = function (link) {
            var status = this.load(link, !1);
            isNotEmpty(status) && eval(status)
        }, Utils.prototype.getHttpLink = function (a) {
            return isEmpty(a) ? void 0 : (-1 == a.indexOf("http") && (a = 0 == a.indexOf("/") ? g_status.host + a : g_status.host + "/" + a), a)
        }, Utils
    }(), g_utils = new Utils, window.isEmpty = function (a) {
        return null == a || "undefined" == typeof a || 0 == a.length
    }, window.isNotEmpty = function (a) {
        return !isEmpty(a)
    }, window.isFunc = function (a) {
        return null != a && "function" == typeof a
    }, window.isNotFunc = function (a) {
        return !isFunc(a)
    }, window.typeOf = function (a, b) {
        return "string" != typeof b ? !1 : typeof a == b
    }, window.isArray = function (a) {
        return isNotEmpty(a) && "Array" == className(a)
    }, window.isNotArray = function (a) {
        return !isArray(a)
    }, window.className = function (a) {
        if (a && a.constructor && a.constructor.toString) {
            var b = a.constructor.toString().match(/function\s*(\w+)/);
            if (b && 2 == b.length)return a.clazz = b[1], b[1]
        }
        return void 0
    }, window.isSameClass = function (a, b) {
        return isNotEmpty(a) && isNotEmpty(b) ? className(a) == className(b) : !1
    }, window.isDifClass = function (a, b) {
        return !isSameClass(a, b)
    }, window.openWindow = function (a, b, c, d) {
        var a, b, c, d, e = (window.screen.availHeight - 30 - d) / 2, f = (window.screen.availWidth - 10 - c) / 2;
        window.open(a, b, "height=" + d + ",,innerHeight=" + d + ",width=" + c + ",innerWidth=" + c + ",top=" + e + ",left=" + f + ",toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no")
    }, window.doNothing = function () {
        return !0
    }, window.updateUrl = function (a) {
        window.history && window.history.pushState && window.history.pushState(null, a, a)
    }, window.isIframe = function () {
        return top.location != self.location
    }, window.isNotIframe = function () {
        return !isIframe()
    }, window.buildString = function () {
        for (var a = [], b = 0; b < arguments.length; b++)a[b] = arguments[b];
        return a.join("")
    }, window.console = window.console || {}, console.log || (console.log = "undefined" != typeof opera ? opera.postError : function (a) {
        }), Array.prototype.indexOf || (Array.prototype.indexOf = function (a) {
        var b = this.length >>> 0, c = Number(arguments[1]) || 0;
        for (c = 0 > c ? Math.ceil(c) : Math.floor(c), 0 > c && (c += b); b > c; c++)if (c in this && this[c] === a)return c;
        return -1
    }), ConsoleUtils = function () {
        function a(a) {
            b = a
        }

        var b = !1;
        return a.prototype.toggle = function () {
            b = !b
        }, a.prototype.open = function () {
            b = !0
        }, a.prototype.close = function () {
            b = !1
        }, a.prototype.log = function (a) {
            b && console.log(a)
        }, a
    }(), g_console = new ConsoleUtils(!1), String.prototype.realLength = function () {
        return this.replace(/[^\x00-\xff]/g, "**").length
    }, window.getQueryString = function (a) {
        a = a.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var b = "[\\?&]" + a + "=([^&#]*)", c = new RegExp(b), d = c.exec(window.location.search);
        return null == d ? "" : decodeURIComponent(d[1].replace(/\+/g, " "))
    }, window.rgb2hex = function (a) {
        return a = a.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i), a && 4 === a.length ? "#" + ("0" + parseInt(a[1], 10).toString(16)).slice(-2) + ("0" + parseInt(a[2], 10).toString(16)).slice(-2) + ("0" + parseInt(a[3], 10).toString(16)).slice(-2) : ""
    }, window.hex2rgb = function (a) {
        a = a.lastIndexOf("#") > -1 ? a.replace(/#/, "0x") : "0x" + a;
        var b = a >> 16, c = (65280 & a) >> 8, d = 255 & a;
        return [b, c, d]
    };
    var os = {android: !1, osx: !1, ios: !1, win: !1, varsion: !1}, device = {
        name: !1,
        version: !1
    }, browser = {name: !1, version: !1};
    !function (a, b, c) {
        var d = navigator.userAgent, e = d.match(/MicroMessenger\/([\d.]+)/), f = d.match(/WebKit\/([\d.]+)/), g = d.match(/(Android)\s+([\d.]+)/), h = d.match(/(iPad).*OS\s([\d_.]+)/), i = d.match(/(iPod).*OS\s([\d_.]+)/), j = !i && !h && d.match(/(iPhone\sOS)\s([\d_.]+)/), k = d.match(/(webOS|hpwOS)[\s\/]([\d.]+)/), l = (k && d.match(/TouchPad/), d.match(/Kindle\/([\d.]+)/), d.match(/Silk\/([\d._]+)/), d.match(/(BlackBerry).*Version\/([\d.]+)/), d.match(/CriOS\/([\d.]+)/), d.match(/Opera\/([\d.]+)/), d.match(/Safari\/([\d.]+)/), d.match(/QQ\/([\d.]+)/)), m = (d.match(/UCBrowser\/([\d.]+)/), d.match(/qqnews\/([\d.]+)/)), n = d.match(/QQLiveBrowser\/([\d.]*)/);
        (c.webkit = !!f) && (c.version = f[1]), g && (a.android = !0, a.version = g[2], a.name = "android"), j && (a.ios = a.iphone = !0, a.version = j[2].replace(/_/g, "."), a.name = "ios"), h && (a.ios = a.ipad = !0, a.version = h[2].replace(/_/g, "."), a.name = "ios"), i && (a.ios = a.ipod = !0, a.version = i[2].replace(/_/g, "."), a.name = "ios"), a.ios || a.android ? b.name = "mob" : b.name = "pc", e && (a.wx = !0, a.wxVersion = e[1], c.name = "weixin", c.version = e[1], c.weixin = !0), l && (c.name = "mqq", c.version = l[1], c.mqq = !0), n && (c.name = "qqvideo", c.version = n[1] || "4.0", c.qqvideo = !0), m && (c.name = "qqnews", c.version = m[1], c.qqnews = !0)
    }(os, device, browser);
    var loadJs = function (a, b) {
        var c = document.createElement("script");
        c.setAttribute("type", "text/javascript"), c.setAttribute("src", a), document.getElementsByTagName("head")[0].appendChild(c), /msie/.test(window.navigator.userAgent.toLowerCase()) ? c.onreadystatechange = function () {
                ("loaded" == this.readyState || "complete" == this.readyState) && b()
            } : /gecko/.test(window.navigator.userAgent.toLowerCase()) ? c.onload = function () {
                    b()
                } : b()
    }, loadCss = function (a, b) {
        var c = document.createElement("link");
        c.setAttribute("type", "text/stylesheet"), c.setAttribute("href", a), document.getElementsByTagName("head")[0].appendChild(c)
    }, store = function () {
        function a() {
            return b ? b : (b = e.body.appendChild(e.createElement("div")), b.style.display = "none", b.addBehavior("#default#userData"), b.load(f), b)
        }

        var b, c = {}, d = window, e = d.document, f = "localStorage", g = "globalStorage";
        return c.set = function (a, b) {
        }, c.get = function (a) {
        }, c.remove = function (a) {
        }, c.clear = function () {
        }, f in d && d[f] ? (b = d[f], c.set = function (a, c) {
                b.setItem(a, c)
            }, c.get = function (a) {
                return b.getItem(a)
            }, c.remove = function (a) {
                b.removeItem(a)
            }, c.clear = function () {
                b.clear()
            }) : g in d && d[g] ? (b = d[g][d.location.hostname], c.set = function (a, c) {
                    b[a] = c
                }, c.get = function (a) {
                    return b[a] && b[a].value
                }, c.remove = function (a) {
                    delete b[a]
                }, c.clear = function () {
                    for (var a in b)delete b[a]
                }) : e.documentElement.addBehavior && (c.set = function (b, c) {
                    var d = a();
                    d.setAttribute(b, c), d.save(f)
                }, c.get = function (b) {
                    var c = a();
                    return c.getAttribute(b)
                }, c.remove = function (b) {
                    var c = a();
                    c.removeAttribute(b), c.save(f)
                }, c.clear = function () {
                    var b = a(), c = b.XMLDocument.documentElement.attributes;
                    b.load(f);
                    for (var d, e = 0; d = c[e]; e++)b.removeAttribute(d.name);
                    b.save(f)
                }), c
    }(), cookie = function () {
        var a = {};
        return a.set = function (a, b) {
            var c = new Date, d = new Date, e = "qq.com";
            return d.setTime(c.getTime() + 864e5), document.cookie = a + "=" + b + "; expires=" + d.toGMTString() + "; path=/; " + (e ? "domain=" + e + ";" : "domain=qq.com;"), !0
        }, a.get = function (a) {
            var b = document.cookie.match(new RegExp("(^| )" + a + "=([^;]*)(;|$)"));
            return null !== b ? window.unescape(b[2]) : null
        }, a
    }();
    !function (a) {
        a.postForm = function (b, c, d) {
            var e = "callback" + parseInt(1e10 * Math.random());
            top.window[e] = d, c.format = "SCRIPT", c.callback = "top." + e;
            var f = "post_iframe_" + e;
            a("#post_iframe").length || a("body").append('<iframe id="' + f + '" name="' + f + '" style="display:none"></iframe>'), a("<form></form>", {
                id: "test",
                text: "this is a div",
                "class": "warpper",
                click: function () {
                    var b = a(this).text();
                    alert(b)
                }
            }).appendTo("body");
            var g = a("#_messageform").length ? a("#_messageform").attr("action", b).empty() : a('<form action="' + b + '" method="post" target="' + f + '" id="_messageform" style="display:none;" accept-charset="utf-8"></form>').appendTo(a("body"));
            for (name in c)g.append(a('<input name="' + name + '" type="hidden" value="" />').val(c[name]));
            g.submit()
        }
    }(jQuery), function (a) {
        a.postForm = function (b, c, d) {
            var e = "callback" + parseInt(1e10 * Math.random());
            top.window[e] = d, c.format = "SCRIPT", c.callback = "top." + e;
            var f = "postiframe";
            $iframe = a("#" + target).length ? "" : a("<iframe></iframe>", {
                    id: f,
                    name: f,
                    style: "display:none"
                }).appendTo("body"), $form = a("#messageform").length ? a("#messageform").attr("action", b).empty() : a("<form></form>", {
                    id: "messageform",
                    target: f,
                    "accept-charset": "utf-8",
                    method: "post",
                    style: "display:none"
                }).appendTo("body");
            for (var g in c)$form.append(a("<input />", {type: "hidden", name: g, value: c[g]}));
            $form.submit()
        }
    }(jQuery);
    try {
        document.domain = "qq.com"
    } catch (e) {
    }
    var login = {
        config: {},
        logintype: !1,
        openid: !1,
        appid: !1,
        access_token: !1,
        uin: !1,
        skey: !1,
        nick: "",
        avatar: ""
    };
    login.getNick = function () {
        return this.nick
    }, login.getAvatar = function () {
        return this.head
    };
    var _base;
    "undefined" != typeof top.cp && top.cp.login ? _base = top.cp : "undefined" != typeof top.txv && top.txv.login && (_base = top.txv), login.doLogin = function (a) {
        "undefined" != typeof top.cp && top.cp.login ? top.cp.login.openLogin() : "undefined" != typeof top.txv && top.txv.login && top.txv.login.openLogin()
    }, login.doLogout = function (a) {
        "undefined" != typeof top.cp && top.cp.login ? top.cp.login.logout() : "undefined" != typeof top.txv && top.txv.login && top.txv.login.logout(), this.init()
    }, login.init = function () {
        login.logintype = !1;
        var a;
        "undefined" != typeof top.cp && top.cp.login ? ("function" == typeof top.cp.login.isWxLogin && top.cp.login.isWxLogin() ? (login.logintype = "wx", a = top.cp.login.getWxAuthCookies(), login.access_token = a.access_token, login.appid = a.appid, login.openid = a.openid) : "function" == typeof top.cp.login.isQQLogin && top.cp.login.isQQLogin() ? (login.logintype = "qq", login.skey = top.cp.login.getSkey(), login.uin = top.cp.login.getUin()) : "function" == typeof top.cp.login.isLogin && top.cp.login.isLogin() && (login.logintype = "qq", login.skey = top.cp.login.getSkey(), login.uin = top.cp.login.getUin()), login.head = top.cp.login.getAvatar(), login.nick = top.cp.login.getNick()) : "undefined" != typeof top.txv && top.txv.login ? ("function" == typeof top.txv.login.isWxLogin && top.txv.login.isWxLogin() ? (login.logintype = "wx", a = top.txv.login.getWxAuthCookies(), login.access_token = a.access_token, login.appid = a.appid, login.openid = a.openid) : "function" == typeof top.txv.login.isQQLogin && top.txv.login.isQQLogin() ? (login.logintype = "qq", login.skey = top.txv.login.getSkey(), login.uin = top.txv.login.getUin()) : "function" == typeof top.txv.login.isLogin && top.txv.login.isLogin() && (login.logintype = "qq", login.skey = top.txv.login.getSkey(), login.uin = top.txv.login.getUin()), login.head = top.txv.login.getAvatar(), login.nick = top.txv.login.getNick()) : (login.skey = cookie.get("skey") || cookie.get("lskey"), login.uin = cookie.get("uin") || cookie.get("luin"), login.uin = login.uin.replace(/^o0*/, ""), login.skey && login.uin && (login.logintype = "qq"))
    }, login.isLogin = function () {
        return login.init(), !!login.logintype
    }, login.getLoginType = function () {
        return login.logintype
    }, setTimeout(function () {
        _base.login.addLoginCallback(function (a) {
            login.init()
        }), _base.login.addLogoutCallback(function (a) {
            login.init()
        })
    }, 800), login.on = function (a, b) {
        setTimeout(function () {
            switch (a) {
                case"login":
                    _base.login.addLoginCallback(b);
                    break;
                case"logout":
                    _base.login.addLogoutCallback(b);
                    break;
                default:
                    console.log("error event")
            }
        }, 800)
    };
    var share = {config: {}};
    share.set = function (a) {
        for (var b in a)this.config[b] = a[b]
    }, share.update = function () {
    }, share.show = function () {
        var a = "http://share.v.t.qq.com/index.php?c=share&a=index&site=&url=" + encodeURIComponent(share.config.link) + "&title=" + encodeURIComponent(share.config.title) + "&pic=" + share.config.image;
        window.open(a, "_blank")
    }, share.init = function () {
        var a = document.getElementsByTagName("[itemprop=image]")[0] || {content: ""}, b = document.getElementsByTagName("[itemprop=description]")[0] || {content: ""}, c = {};
        c.title = document.getElementsByTagName("title")[0].innerHTML || "", c.image = a.content, c.desc = b.content, c.link = window.location.href.replace(/#.*$/, "") || "", this.set(c)
    };
    var boss = function () {
        function a(a) {
            if (b = this, "object" == typeof a)for (var d in a)c[d] = a[d]; else c.BossId = a;
            return c.iFlow = (new Date).getTime() + parseInt(10 * Math.random()), this
        }

        var b, c = (a.prototype, {
            sIp: "",
            iQQ: login.uin || "",
            sBiz: "",
            iSta: "0",
            sUrl: encodeURIComponent(location.href),
            sRef: encodeURIComponent(document.referrer),
            sPageId: 0,
            sPos: 0,
            wx_openid: login.openid || ""
        });
        return a.prototype.report = function (a) {
            var b = "http://btrace.qq.com/kvcollect?", d = {};
            for (var e in c)d[e] = c[e];
            if ("string" == typeof a) d.sOp = a; else for (var e in a)d[e] in a[e];
            for (var e in d)b += e + "=" + d[e] + "&";
            var f = new Image(1, 1);
            f.src = b + "_=" + Math.random()
        }, a
    }();
    global.cherry = {
        os: os,
        browser: browser,
        device: device,
        cookie: cookie,
        store: store,
        login: login,
        share: share,
        boss: boss
    }
}(this);
/*  |xGv00|cda7136bbc5aa368bdffe32cd9dd73d9 */